package edu.asu.sapa.utils;

public abstract class Priority<T> implements
		Comparable<Priority<T>>, Cloneable {
	public T event;

	public Priority() {
		event = null;
	}

	public Priority(T event) {
		this.event = event;
	}

	public Priority(T event, float p) {
		this.event = event;
	}

	public abstract Priority<T> set(T event, float p);
	public abstract int compareTo(Priority<T> o);
	
	@Override
	public Priority<T> clone() {
		Priority<T> o = null;
		try {
			o = (Priority<T>) super.clone();
		} catch (CloneNotSupportedException e) {
			// assert false;
		}
		// Priority is a wrapper that does not own its event.
		// event = (T) event.clone();
		return o;
	}



}
